In a typical data center, multiple compute devices may coordinate through a network to execute workloads (e.g., applications, processes, threads, etc.) requested by a client device (e.g., a customer). In executing the workloads, the compute devices may retrieve and store data from and to data storage devices through the network. To increase the speed of communicating the data through the network, the data may be compressed prior to transmission (e.g., retrieved in a compressed form from a data storage device). However, clock cycles are then spent on the receiving compute device to decompress the data. The time spent decompressing the data may adversely affect the speed at which the corresponding workload is executed.
A popular form of compression is entropy encoding, such as Huffman encoding. Decompressing a Huffman encoded data set is typically a sequential process in which a compute device initially parses a data structure known as a tree descriptor. The tree descriptor indicates multiple variable size codes and associated symbols, and the sizes of the codes are inversely proportional to the frequency of the symbols in the decompressed form of the data (e.g., characters, numbers, pointers to other sections of the data, etc.). Decompression proceeds by replacing each variable size code with the corresponding symbol. However, given that the codes are of variable size, the position of the next variable size code in the compressed data set is unknown until the variable size code at the present position is decoded (e.g., the corresponding symbol is identified). As such, the lack of information about the position of the next variable sized code causes the data be decompressed sequentially (e.g., one variable sized code at a time), and represents a fundamental limiter of performance.